package weworkgo

import (
	"errors"
	"gitee.com/microrain/weworkgo/lib"
	"log"
)

/**
 * GetLoginUrl 单点登录 - 获取登录的地址.
 *
 * @param  string  $redirectUri 回调地址
 * @param  string  $userType 支持登录的类型
 * @param  string  $state
 *
 * @return string
 */
func (p *Provider) GetLoginUrl(redirectUri, userType, state string) string {

	return ""
}

/**
 * 单点登录 - 获取登录用户信息.
 *
 * @param  string  $authCode
 *获取登录用户信息
从企业微信的管理端，通过业务设置，登录到应用系統的管理端
第三方可通过如下接口，获取登录用户的信息。建议用户以返回信息中的corpid及userid为主键匹配用户。
https://work.weixin.qq.com/api/doc/90002/90151/91158
*/
var getLoginInfoURL = "https://qyapi.weixin.qq.com/cgi-bin/service/get_login_info?access_token="

func (p *Provider) GetLoginInfo(authCode string) (*LoginInfoResponse, error) {

	providerAccessToken := p.GetProviderToken()

	var resData = map[string]string{
		"auth_code": authCode,
	}

	result, err := lib.HttpPostData(getLoginInfoURL+providerAccessToken, resData)
	log.Printf("Request WechatCorpTpToken Response:(%s) %s", p.Config.CorpId, result)
	if err != nil {
		return nil, err
	}
	response := lib.UnJson(result, new(LoginInfoResponse)).(*LoginInfoResponse)
	if response == nil {
		return nil, errors.New("Request MenuCreate Failed: " + result)
	}
	return response, nil
}

/**
 * 获取注册定制化URL.
 *
 * @param  string  registerCode
 *
 * @return string
 */
func (p *Provider) GetRegisterUri(registerCode string) string {
	//resUri := 'https://open.work.weixin.qq.com/3rdservice/wework/register?'.http_build_query($params)
	return ""

}

/**
 * 获取注册码.
 *
 * @param  string  corpName
 * @param  string  adminName
 * @param  string  adminMobile
 * @param  string  state
https://work.weixin.qq.com/api/doc/90001/90143/90581
*/
func (p *Provider) GetRegisterCode(rcr RegisterCodeRequest) *RegisterCodeResponse {

	return nil
}

/**
 * 查询注册状态.
 *
 * Desc:该API用于查询企业注册状态，企业注册成功返回注册信息.
 *
 * @param  string  registerCode
 *
https://work.weixin.qq.com/api/doc/90001/90143/90582
*/
func (p *Provider) GetRegisterInfo(registerCode string) *RegisterInfoResponse {
	return nil
}

/**
 * 设置授权应用可见范围.
 *
 * Desc:调用该接口前提是开启通讯录迁移，收到授权成功通知后可调用。
 *      企业注册初始化安装应用后，应用默认可见范围为根部门。
 *      如需修改应用可见范围，服务商可以调用该接口设置授权应用的可见范围。
 *      该接口只能使用注册完成回调事件或者查询注册状态返回的access_token。
 *      调用设置通讯录同步完成后或者access_token超过30分钟失效（即解除通讯录锁定状态）则不能继续调用该接口。
 *
 * @param  string  accessToken
 * @param  string  agentId
 * @param  array  allowUser
 * @param  array  allowParty
 * @param  array  allowTag
 *https://work.weixin.qq.com/api/doc/90001/90143/90583
 */
func (p *Provider) SetAgentScope(accessToken string, asr AgentScopeRequest) *AgentScopeResponse {

	return nil
}

/**
 * 设置通讯录同步完成.
 *
 * Desc:该API用于设置通讯录同步完成，解除通讯录锁定状态，同时使通讯录迁移access_token失效。
 *
 * @param  string  accessToken
https://work.weixin.qq.com/api/doc/90001/90143/90584
*/
func (p *Provider) ContactSyncSuccess(accessToken string) bool {

	return false
}

/**
 * 通讯录单个搜索
https://work.weixin.qq.com/api/doc/90001/90143/91844
*/
func (p *Provider) SearchContact(sct SearchContactRequest) *SearchContactResponse {

	return nil
}
